#include "my_process.h"

/*TODO：完成help功能*/
void help(){
    printf("Help\n");
    error("help is writing now!");
    assert(0);
}

void run_db_process(bool &is_exit,bool &db_process,db &current_db){
    string command_;
    cin>>command_;
    Command cmd =strtok_command(command_,DB_CMD);
    switch (cmd.type)
    {
    case CMD_CREATE:
        create_db(cmd.args);
        break;
    case CMD_DROP:
        drop_db(cmd.args);
        break;
    case CMD_USE:
        use_db(cmd.args,current_db);
        db_process = false;
        break;
    case CMD_EXIT:
        is_exit = true;
        break;
    case CMD_HELP:
        help();
        break;
    default:
        printf("Invalid command\n");
        break;
    }
}
/**
 * @brief 执行表处理命令
 * 
 * 该函数根据用户输入的命令执行相应的表处理操作。它首先读取用户输入的命令，
 * 然后根据命令类型执行相应的操作，如创建表、删除表、插入数据等。
 * 
 * @param db_process 引用类型，表示是否继续进行数据库处理，若为true则继续，否则停止
 * @param current_db 当前操作的数据库
 */
void run_table_process(bool &db_process,db current_db){
    // 读取用户输入的命令
    string command_;
    cin>>command_;
    // 将用户输入的命令转换为Command对象
    Command  cmd =strtok_command(command_,TABLE_CMD);
    
    // 根据命令类型执行相应的操作
    switch (cmd.type)
    {
    case CMD_CREATE:
        // 执行创建表操作
        create_table(cmd.args,current_db);
        break;
    case CMD_DROP:
        // 执行删除表操作
        drop_table(cmd.args,current_db);
        break;
    case CMD_INSERT:
        // 执行插入数据操作
        insert_table(cmd.args,current_db);
        break;
    case CMD_SELECT:
        // 执行查询数据操作
        select_table(cmd.args,current_db);
        break;
    case CMD_INFO:
        // 执行获取表信息操作
        info_table(cmd.args,current_db);
        break;
    case CMD_DELETE:
        // 执行删除数据操作
        delete_table(cmd.args,current_db);
        break;
    case CMD_EXIT:
        // 设置db_process为true，表示停止数据库处理操作
        db_process = true;
        break;
    case CMD_HELP:
        // 执行帮助操作，显示可用命令
        help();
        break;
    default:
        // 当命令类型无效时，输出错误信息
        printf("Invalid command\n");
        
    }
}
